home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / xml4j.jar / com / ibm / xml / parser / Util.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-08-30  |  4.3 KB  |  402 lines

  1. package com.ibm.xml.parser;
  2.  
  3. import java.io.IOException;
  4. import java.io.Writer;
  5. import java.util.Vector;
  6.  
  7. public class Util {
  8.    public static boolean checkName(String var0) {
  9.       if (var0.length() < 1) {
  10.          return false;
  11.       } else {
  12.          label58: {
  13.             char var1 = var0.charAt(0);
  14.             boolean var10000;
  15.             if (var1 < 65536 && var1 >= 0) {
  16.                if ((2 & XMLChar.flags[var1]) != 0) {
  17.                   break label58;
  18.                }
  19.  
  20.                var10000 = false;
  21.             } else {
  22.                var10000 = false;
  23.             }
  24.  
  25.             if (!var10000 && var1 != '_' && var1 != ':') {
  26.                return false;
  27.             }
  28.          }
  29.  
  30.          for(int var2 = 1; var2 < var0.length(); ++var2) {
  31.             char var3 = var0.charAt(var2);
  32.             boolean var4;
  33.             if (var3 < 65536 && var3 >= 0) {
  34.                if ((8 & XMLChar.flags[var3]) != 0) {
  35.                   continue;
  36.                }
  37.  
  38.                var4 = false;
  39.             } else {
  40.                var4 = false;
  41.             }
  42.  
  43.             if (!var4) {
  44.                return false;
  45.             }
  46.          }
  47.  
  48.          return true;
  49.       }
  50.    }
  51.  
  52.    public static boolean checkNCName(String var0) {
  53.       if (var0.length() < 1) {
  54.          return false;
  55.       } else {
  56.          label60: {
  57.             char var1 = var0.charAt(0);
  58.             boolean var10000;
  59.             if (var1 < 65536 && var1 >= 0) {
  60.                if ((2 & XMLChar.flags[var1]) != 0) {
  61.                   break label60;
  62.                }
  63.  
  64.                var10000 = false;
  65.             } else {
  66.                var10000 = false;
  67.             }
  68.  
  69.             if (!var10000 && var1 != '_') {
  70.                return false;
  71.             }
  72.          }
  73.  
  74.          int var2 = 1;
  75.  
  76.          while(true) {
  77.             if (var2 >= var0.length()) {
  78.                return true;
  79.             }
  80.  
  81.             char var3 = var0.charAt(var2);
  82.             if (var3 == ':') {
  83.                break;
  84.             }
  85.  
  86.             label61: {
  87.                boolean var4;
  88.                if (var3 < 65536 && var3 >= 0) {
  89.                   if ((8 & XMLChar.flags[var3]) != 0) {
  90.                      break label61;
  91.                   }
  92.  
  93.                   var4 = false;
  94.                } else {
  95.                   var4 = false;
  96.                }
  97.  
  98.                if (!var4) {
  99.                   break;
  100.                }
  101.             }
  102.  
  103.             ++var2;
  104.          }
  105.  
  106.          return false;
  107.       }
  108.    }
  109.  
  110.    public static boolean checkNmtoken(String var0) {
  111.       if (var0.length() < 1) {
  112.          return false;
  113.       } else {
  114.          for(int var1 = 0; var1 < var0.length(); ++var1) {
  115.             char var2 = var0.charAt(var1);
  116.             boolean var10000;
  117.             if (var2 < 65536 && var2 >= 0) {
  118.                if ((8 & XMLChar.flags[var2]) != 0) {
  119.                   continue;
  120.                }
  121.  
  122.                var10000 = false;
  123.             } else {
  124.                var10000 = false;
  125.             }
  126.  
  127.             if (!var10000) {
  128.                return false;
  129.             }
  130.          }
  131.  
  132.          return true;
  133.       }
  134.    }
  135.  
  136.    public static boolean checkAllSpace(String var0) {
  137.       for(int var1 = 0; var1 < var0.length(); ++var1) {
  138.          char var2 = var0.charAt(var1);
  139.          if (var2 < 0 || var2 >= 128 || (4 & XMLChar.flags[var2]) == 0 && true) {
  140.             return false;
  141.          }
  142.       }
  143.  
  144.       return true;
  145.    }
  146.  
  147.    public static boolean checkEncoding(String var0) {
  148.       if (var0.length() < 1) {
  149.          return false;
  150.       } else if ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(var0.charAt(0)) < 0) {
  151.          return false;
  152.       } else {
  153.          for(int var1 = 1; var1 < var0.length(); ++var1) {
  154.             if ("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ._-".indexOf(var0.charAt(var1)) < 0) {
  155.                return false;
  156.             }
  157.          }
  158.  
  159.          return true;
  160.       }
  161.    }
  162.  
  163.    public static boolean checkLanguageID(String var0) {
  164.       int var1 = var0.length();
  165.       if (var1 < 2) {
  166.          return false;
  167.       } else {
  168.          char var2 = var0.charAt(0);
  169.          char var3 = var0.charAt(1);
  170.          int var4 = 2;
  171.          if ((var2 < 'a' || var2 > 'z') && (var2 < 'A' || var2 > 'Z') || (var3 < 'a' || var3 > 'z') && (var3 < 'A' || var3 > 'Z')) {
  172.             if (var3 != '-' || var2 != 'i' && var2 != 'I' && var2 != 'x' && var2 != 'X' || var1 < 3) {
  173.                return false;
  174.             }
  175.  
  176.             var2 = var0.charAt(var4++);
  177.             if ((var2 < 'a' || var2 > 'z') && (var2 < 'A' || var2 > 'Z')) {
  178.                return false;
  179.             }
  180.  
  181.             while(var4 < var1) {
  182.                var2 = var0.charAt(var4);
  183.                if ((var2 < 'a' || var2 > 'z') && (var2 < 'A' || var2 > 'Z')) {
  184.                   break;
  185.                }
  186.  
  187.                ++var4;
  188.             }
  189.          }
  190.  
  191.          while(var4 < var1) {
  192.             if (var4 + 2 > var1) {
  193.                return false;
  194.             }
  195.  
  196.             if (var0.charAt(var4++) != '-') {
  197.                return false;
  198.             }
  199.  
  200.             var2 = var0.charAt(var4++);
  201.             if ((var2 < 'a' || var2 > 'z') && (var2 < 'A' || var2 > 'Z')) {
  202.                return false;
  203.             }
  204.  
  205.             while(var4 < var1) {
  206.                var2 = var0.charAt(var4);
  207.                if ((var2 < 'a' || var2 > 'z') && (var2 < 'A' || var2 > 'Z')) {
  208.                   break;
  209.                }
  210.  
  211.                ++var4;
  212.             }
  213.          }
  214.  
  215.          return true;
  216.       }
  217.    }
  218.  
  219.    public static boolean checkVersionNum(String var0) {
  220.       if (var0.length() < 1) {
  221.          return false;
  222.       } else {
  223.          for(int var1 = 0; var1 < var0.length(); ++var1) {
  224.             char var2 = var0.charAt(var1);
  225.             if ((var2 < 'a' || var2 > 'z') && (var2 < 'A' || var2 > 'Z') && (var2 < '0' || var2 > '9') && "_.:-".indexOf(var2) < 0) {
  226.                return false;
  227.             }
  228.          }
  229.  
  230.          return true;
  231.       }
  232.    }
  233.  
  234.    public static int getInvalidURIChar(String var0) {
  235.       for(int var1 = 0; var1 < var0.length(); ++var1) {
  236.          char var2 = var0.charAt(var1);
  237.          if ((var2 < 'a' || var2 > 'z') && (var2 < 'A' || var2 > 'Z') && (var2 < '0' || var2 > '9') && ";/?:@&=+$,-_.!~*'()%".indexOf(var2) < 0) {
  238.             return var1;
  239.          }
  240.       }
  241.  
  242.       return -1;
  243.    }
  244.  
  245.    public static boolean isURN(String var0) {
  246.       return var0.length() > 4 && var0.substring(0, 4).equalsIgnoreCase("urn:");
  247.    }
  248.  
  249.    public static String normalizeURN(String var0) {
  250.       boolean var1 = true;
  251.  
  252.       for(int var2 = 0; var2 < var0.length(); ++var2) {
  253.          char var3 = var0.charAt(var2);
  254.          if (var3 >= 'A' && var3 <= 'Z') {
  255.             var1 = false;
  256.          }
  257.  
  258.          if (var2 >= 4 && var3 == ':') {
  259.             if (var1) {
  260.                return var0;
  261.             }
  262.  
  263.             return var0.substring(0, var2).toLowerCase() + var0.substring(var2);
  264.          }
  265.       }
  266.  
  267.       return var0;
  268.    }
  269.  
  270.    public static String backReference(String var0, String var1) {
  271.       StringBuffer var2 = new StringBuffer(var0.length() * 12 / 10);
  272.  
  273.       for(int var3 = 0; var3 < var0.length(); ++var3) {
  274.          char var4 = var0.charAt(var3);
  275.          if (var4 == '<') {
  276.             var2.append("<");
  277.          } else if (var4 == '>') {
  278.             var2.append(">");
  279.          } else if (var4 == '&') {
  280.             var2.append("&");
  281.          } else if (var4 >= '\ud800' && var4 < '\udc00') {
  282.             if (var3 + 1 >= var0.length()) {
  283.                throw new LibraryException("com.ibm.xml.parser.Util#backReference(): Invalid UTF-16 surrogate detected: " + Integer.toHexString(var4) + " ?");
  284.             }
  285.  
  286.             ++var3;
  287.             int var5 = var0.charAt(var3);
  288.             if (var5 < 56320 || var5 >= 57344) {
  289.                throw new LibraryException("com.ibm.xml.parser.Util#backReference(): Invalid UTF-16 surrogate detected: " + Integer.toHexString(var4) + " " + Integer.toHexString(var5));
  290.             }
  291.  
  292.             var5 = (var4 - '\ud800' << 10) + var5 - '\udc00' + 65536;
  293.             var2.append("&#x");
  294.             var2.append(Integer.toHexString(var5));
  295.             var2.append(";");
  296.          } else {
  297.             var2.append(var4);
  298.          }
  299.       }
  300.  
  301.       return var2.toString();
  302.    }
  303.  
  304.    public static String backReferenceForEntity(String var0, String var1) {
  305.       return backReference(var0, "&\"'%\r\n\t", var1);
  306.    }
  307.  
  308.    public static String backReference(String var0, String var1, String var2) {
  309.       StringBuffer var3 = new StringBuffer(var0.length() * 12 / 10);
  310.  
  311.       for(int var4 = 0; var4 < var0.length(); ++var4) {
  312.          char var5 = var0.charAt(var4);
  313.          int var6 = var1.indexOf(var5);
  314.          if (var6 >= 0) {
  315.             var3.append("&#");
  316.             var3.append(Integer.toString(var5));
  317.             var3.append(";");
  318.          } else if (var5 >= '\ud800' && var5 < '\udc00') {
  319.             if (var4 + 1 >= var0.length()) {
  320.                throw new LibraryException("com.ibm.xml.parser.Util#backReference(): Invalid UTF-16 surrogate detected: " + Integer.toHexString(var5) + " ?");
  321.             }
  322.  
  323.             ++var4;
  324.             int var7 = var0.charAt(var4);
  325.             if (var7 < 56320 || var7 >= 57344) {
  326.                throw new LibraryException("com.ibm.xml.parser.Util#backReference(): Invalid UTF-16 surrogate detected: " + Integer.toHexString(var5) + " " + Integer.toHexString(var7));
  327.             }
  328.  
  329.             var7 = (var5 - '\ud800' << 10) + var7 - '\udc00' + 65536;
  330.             var3.append("&#x");
  331.             var3.append(Integer.toHexString(var7));
  332.             var3.append(";");
  333.          } else {
  334.             var3.append(var5);
  335.          }
  336.       }
  337.  
  338.       return var3.toString();
  339.    }
  340.  
  341.    public static void printSpace(Writer var0, int var1) throws IOException {
  342.       for(int var2 = 0; var2 < var1; ++var2) {
  343.          var0.write(" ");
  344.       }
  345.  
  346.    }
  347.  
  348.    public static void indent(Writer var0, int var1) throws IOException {
  349.       var0.write("\n");
  350.       printSpace(var0, var1);
  351.    }
  352.  
  353.    public static Vector sortStringVector(Vector var0) {
  354.       String[] var1 = new String[var0.size()];
  355.       var0.copyInto(var1);
  356.       heapSort(var1, var1.length);
  357.       var0.removeAllElements();
  358.       var0.ensureCapacity(var1.length);
  359.  
  360.       for(int var2 = 0; var2 < var1.length; ++var2) {
  361.          var0.addElement(var1[var2]);
  362.       }
  363.  
  364.       return var0;
  365.    }
  366.  
  367.    public static void heapSort(String[] var0) {
  368.       heapSort(var0, var0.length);
  369.    }
  370.  
  371.    public static void heapSort(String[] var0, int var1) {
  372.       for(int var2 = var1 / 2; var2 >= 0; --var2) {
  373.          fall(var0, var1, var2);
  374.       }
  375.  
  376.       for(int var4 = var1 - 1; var4 > 0; --var4) {
  377.          String var3 = var0[0];
  378.          var0[0] = var0[var4];
  379.          var0[var4] = var3;
  380.          fall(var0, var4, 0);
  381.       }
  382.  
  383.    }
  384.  
  385.    private static void fall(String[] var0, int var1, int var2) {
  386.       int var3 = 2 * var2 + 1;
  387.       if (var3 < var1) {
  388.          if (var3 + 1 < var1 && var0[var3].compareTo(var0[var3 + 1]) < 0) {
  389.             var3 = 2 * var2 + 2;
  390.          }
  391.  
  392.          if (var0[var2].compareTo(var0[var3]) < 0) {
  393.             String var4 = var0[var2];
  394.             var0[var2] = var0[var3];
  395.             var0[var3] = var4;
  396.             fall(var0, var1, var3);
  397.          }
  398.       }
  399.  
  400.    }
  401. }
  402.